/*
7-82 打印沙漏
分数 20
作者 陈越
单位 浙江大学

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”，要求按下列格式打印

*****
 ***
  *
 ***
*****

所谓“沙漏形状”，是指每行输出奇数个符号；各行符号中心对齐；相邻两行符号数差2；符号数先从大到小顺序递减到1，再从小到大顺序递增；首尾符号数相等。

给定任意N个符号，不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:

输入在一行给出1个正整数N（≤1000）和一个符号，中间以空格分隔。
输出格式:

首先打印出由给定符号组成的最大的沙漏形状，最后在一行中输出剩下没用掉的符号数。
输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2
*/

#include <stdio.h>

// 计算第1行，最多几颗*
int starOf1(int n) {
    int num = 1;
    int sum = 1;
    while(sum*2-1 <= n) {
        num += 2;
        sum += num;
    }
    return num-2;
}

void printChar(int n, char c) {
    for (; n > 0; n--) {
        printf("%c", c);
    }
}

int main() {
    int n;
    char c;
    scanf("%d %c", &n, &c);
    int n1 = starOf1(n);
    int count = 0;
    // printf("%d\n", n1);
    for (int i = n1, b = 0; i >= 1; i-=2, b++) {
        printChar(b, ' ');
        printChar(i, c);
        printf("\n");
        count += i;
    }
    for (int i = 3, b = (n1-3)/2; i <= n1; i += 2, b--) {
        printChar(b, ' ');
        printChar(i, c);
        printf("\n");
        count += i;
    }
    printf("%d\n", n - count);
    return 0;
}